//
//  UIImage+instancetype.h
//  CoreCode
//
//  Created by 曹连华 on 2020/6/4.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (instance)

/**
 * 获取 bundle 中的图片 eg 在 test.bundle 中存现 home@2x.png 图片
 * [UIImage imageWithFileName:@"home" bundleName:@"test" ];
 */
+ (UIImage*)imageWithFileName:(NSString *)name
                   bundleName:(NSString *)bundleName
                       aClass:(Class)aClass;

/**
 * 获取 bundle 中的图片 eg 在 test.bundle 中存现 home@2x.png 和user@2x.jpg 图片
 * [UIImage imageWithFileName:@"home" bundleName:@"test" extension :@"png"];
 * [UIImage imageWithFileName:@"user" bundleName:@"test" extension :@"jpg"];
*/
+ (UIImage*)imageWithFileName:(NSString *)name
                   bundleName:(NSString *)bundleName
                       aClass:(Class)aClass
                    extension:(NSString *)extension;

/** 绘制图片
 * aColor   颜色
 */
+ (UIImage *)imageWithColor:(UIColor *)aColor;

/** 绘制图片
 * aColor   颜色
 * cornerRadius 圆角
 */
+ (UIImage *)imageWithColor:(UIColor *)aColor cornerRadius:(CGFloat)cornerRadius;

/** 绘制图片
 * aColor   颜色
 * cornerRadius 圆角
 * size 大小
 */
+ (UIImage *)imageWithColor:(UIColor *)aColor cornerRadius:(CGFloat)cornerRadius size:(CGSize)size;

/** 改变图片颜色
 * color 颜色
 */
- (UIImage *)imageWithTintColor:(UIColor *)color;

/** 改变图片颜色
 * color 颜色
 * alpha 透明度
 */
- (UIImage *)imageWithTintColor:(UIColor *)color alpha:(CGFloat)alpha;

/*
 * 设置图片透明度
 */
- (UIImage *)imageByApplyingAlpha:(CGFloat)alpha;

/**
 *  等比例缩放
 *
 *  @param size 大小
 *
 *  @return image
 */
- (UIImage *)scaleToSize:(CGSize)size;

/**
 *    按照尺寸缩放图片
 *
 *    @param aSize CGSize
 *
 */
- (UIImage *)shrinkImageForSize:(CGSize)aSize;

/**
 * 将图片压缩至 bytes 大小（如果图片本身大小 > bytes  ）
 */
- (UIImage *)shrinkImageForBytes:(NSUInteger)bytes;

/**
 * 添加 图片 水印到指定图片上
 *
 */
- (UIImage *)addWaterImage:(UIImage *)waterImage inRect:(CGRect)rect;

/**
 * 添加文字水印到指定图片上
 */
- (UIImage *)addWaterText:(NSString *)text attributes:(NSDictionary*)attributes rect:(CGRect)rect;


@end

NS_ASSUME_NONNULL_END
